 import java.awt.*;
 import javax.swing.*;
 import java.awt.event.*;
 import java.util.List;
 import java.util.ArrayList;
 
 /** 
 * Rappresenta l'area di lavoro del grafo.
 * Estendendo la classe JPanel, rappresenta il punto di contatto con il 
 * l'interfaccia grafica Swing. Contiene al suo interno 
 * un riferimentoo al grafo.
 * @see Graph  
 * 
 * @author Massimiliano Ferretti matricola 79769 
 */

 
 public class GraphPanel extends JPanel 
 {
  private Graph graph;
  
  /**
   * Costruttore di default
   */
  public GraphPanel()
  {
    graph = new Graph();
  }     
  
  /**
   * Restituisce il grafo corrente.
   * @return L'oggetto Graph
   */
  public Graph getGraph()
  {
      return graph;
  }
      
  /**
   * Imposta un nuovo grafo associato alla visualizzazione
   * @param newGraph Il nuovo grafo che verrà visualizzato al posto del 
   * precedente all'interno del pannello.
   * @see Graph         
   * @see Graph#load   
   */   
  public void setGraph(Graph newGraph)
  {
    graph = newGraph;
  }  
  
  public void paint(Graphics g)
  {
    super.paint(g);

    Graphics2D g2d = (Graphics2D) g;
    
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
    g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        
    graph.paint(g2d, getWidth(), getHeight());
  }                            
 }
